﻿Public Class DAprotocolo

    Private bd As New BTTbdDataContext

    Public Function ListarEstados() As System.Linq.IQueryable(Of BTTsoft.estado_protocolo)

        Dim Query = From estado In bd.estado_protocolos _
                Select estado
        Return Query

    End Function

    Public Function Buscar(ByVal codProtocolo As Integer, ByVal nombre As String, ByVal patrocinador As Integer, _
                          ByVal responsables As Integer, ByVal fecini As Date, ByVal fecfin As Date, _
                          ByVal tipo As Integer, ByVal estado As Integer)
        'codigo, titulo, patrocinador, investigador principal,nro muestras, nro participantes ,estado
        If codProtocolo <> Nothing Then
            Dim query = From protocolo In bd.protocolos, equipo In bd.equipos, personal In bd.personals _
                        Where protocolo.id_protocolo = codProtocolo _
                        And equipo.id_protocolo = protocolo.id_protocolo _
                        And equipo.id_rol = Constantes.INVESTIGADOR _
                        Select New With { _
                                        .codigo = protocolo.id_protocolo, _
                                        .titulo = protocolo.titulo, _
                                        .patrocinador = protocolo.patrocinador.nombre, _
                                        .investigador = equipo.personal.nombre + " " + equipo.personal.apellido_pat + " " + equipo.personal.apellido_mat, _
                                        .estado = protocolo.estado_protocolo.nombre _
                                         }
            Return query
        End If

        'Dim queryNombre As System.Linq.IQueryable(Of BTTsoft.protocolo)
        'Dim queryPatrocinador As System.Linq.IQueryable(Of BTTsoft.protocolo)

        'If nombre <> Nothing Then
        '    queryNombre = From protocolo In bd.protocolos _
        '                      Where protocolo.titulo Like "%" & nombre & "%" _
        '                      Select protocolo
        'Else
        '    queryNombre = From protocolo In bd.protocolos _
        '                  Select protocolo
        'End If

        'If patrocinador <> Nothing Then
        '    queryPatrocinador = From protocolo In queryNombre _
        '                        Where protocolo.patrocinador.id_patrocinador = patrocinador _
        '                        Select protocolo
        'Else
        '    queryPatrocinador = From protocolo In queryNombre _
        '                        Select protocolo


        'End If

        'Dim Qprotocolo = bd.ExecuteQuery( Of protocolo)(

    End Function

    Public Function ListarTipoProtocolo() As System.Linq.IQueryable(Of BTTsoft.tipo_protocolo)

        Dim Query = From tipo In bd.tipo_protocolos _
                Select tipo

        Return Query
    End Function

    Public Sub Guardar(ByVal Protocolo As BEprotocolos, ByVal Criterio As BEcriterioProtocolo, ByVal Equipo As BEequipo)

        Dim Tprotocolo As New protocolo

        Tprotocolo.id_estado = Protocolo._codEstado
        'Tprotocolo.id_protocolo = Protocolo._codProtocolo
        Tprotocolo.observaciones = Protocolo._obs
        Tprotocolo.titulo = Protocolo._titulo
        Tprotocolo.id_patrocinador = Protocolo._codPatrocinador
        Tprotocolo.id_tipo = Protocolo._codTipo
        Tprotocolo.fec_inicio = Protocolo._fecInicio
        Tprotocolo.fec_fin = Protocolo._fecFin

        'Criterio = Nothing
        If Criterio._valorMax <> 0 Or Criterio._valorMin <> 0 Then

            Dim tipcriterio As tipo_criterio = bd.tipo_criterios.Single(Function(c As tipo_criterio) c.id_tipo_criterio = Constantes.NPACIENTES)
            Dim Tcriterio As New criterio_protocolo

            Tcriterio.id_criterio = 1 'Seria el primer criterio de este tipo
            Tcriterio.valor_max = Criterio._valorMax
            Tcriterio.valor_min = Criterio._valorMin

            tipcriterio.criterio_protocolos.Add(Tcriterio)
            Tprotocolo.criterio_protocolos.Add(Tcriterio)

        End If

        If Equipo._codRol <> Nothing Then

            Dim tRol As rol = bd.rols.Single(Function(r As rol) r.id_rol = Equipo._codRol)
            Dim tpersonal As personal = bd.personals.Single(Function(p As personal) p.id_personal = Equipo._codPersonal)

            Dim Tequipo As New equipo

            tRol.equipos.Add(Tequipo)
            tpersonal.equipos.Add(Tequipo)
            Tprotocolo.equipos.Add(Tequipo)


        End If
        Try
            bd.protocolos.InsertOnSubmit(Tprotocolo)
            bd.SubmitChanges()
            MsgBox("Guardado")
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try



    End Sub

End Class
